/* pokreni.S - pokreni podizanje sustava */
     
#include "postavke.h"


/* ulazna tocka - pocetak koda (treba linkeru pa je oznacavamo globalnom) */
.global	start

.extern	arh_pocetak, code, bss, end	

.section .pocetak_koda

/* Poravnaj na 32 bitovnu granicu */
.align  4
/* Multiboot zaglavlje - treba 'grubu' */
multiboot_header:
	/* magic */
	.long   MULTIBOOT_HEADER_MAGIC
	/* flags */
	.long   MULTIBOOT_HEADER_FLAGS
	/* checksum */
	.long   -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)
	
/* pocetak rada OS-a (tu 'grub' preda sustav) */
start:
	/* Postavi kazaljku stoga */
	mov    $(j_stogjf + VELICINA_STOGA_JEZGRE), %esp
	
	/* Resetiraj registar stanja EFLAGS */
	push   $0
	popf
	
	/* Stavi na stog vrijednosti koje nam je predao "grub" */
	push   %ebx
	push   %eax
	
	/* Pozovi C funkciju */
	call    EXT_C(arh_pocetak)
	//nema povratka!
	
	add	$8, %esp
	
	/* Zaustavi rad */
	cli
loop:	hlt
	jmp     loop
	

//.section .bss

	/* Mjesto za stog */
.align 4
	.comm   j_stogjf, VELICINA_STOGA_JEZGRE

        